#!/bin/bash

set -e  # 遇到错误立即退出

echo "=== 开始修复 Gitee SSH 验证问题 ==="

# 1. 检查是否已添加 gitee.com 到 known_hosts
echo "检查 SSH known_hosts 配置..."
if ! ssh-keygen -F gitee.com > /dev/null; then
    echo "添加 Gitee 的 SSH 主机密钥到 known_hosts..."
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    ssh-keyscan gitee.com >> ~/.ssh/known_hosts 2>/dev/null
    echo "✅ Gitee 主机密钥已添加"
fi

# 2. 检查是否存在 SSH 密钥
echo "检查 SSH 密钥..."
if [ ! -f ~/.ssh/id_ed25519 ] && [ ! -f ~/.ssh/id_rsa ]; then
    echo "未找到 SSH 密钥，正在生成新的 Ed25519 密钥..."
    ssh-keygen -t ed25519 -C "git@gitee.com" -f ~/.ssh/id_ed25519 -N ""
    echo "✅ SSH 密钥已生成"
fi

# 3. 确保 SSH 代理运行并添加密钥
echo "启动 SSH 代理..."
eval "$(ssh-agent -s)" > /dev/null

# 添加默认的 SSH 密钥（优先 Ed25519，其次 RSA）
if [ -f ~/.ssh/id_ed25519 ]; then
    ssh-add ~/.ssh/id_ed25519 2>/dev/null
elif [ -f ~/.ssh/id_rsa ]; then
    ssh-add ~/.ssh/id_rsa 2>/dev/null
fi

# 4. 显示公钥，方便用户添加到 Gitee
echo ""
echo "✅ SSH 配置已完成！"
echo "请将以下公钥复制并添加到 Gitee 的 SSH 密钥设置中（https://gitee.com/profile/sshkeys）:"
echo "------------------------------------------------------------"
if [ -f ~/.ssh/id_ed25519.pub ]; then
    cat ~/.ssh/id_ed25519.pub
elif [ -f ~/.ssh/id_rsa.pub ]; then
    cat ~/.ssh/id_rsa.pub
fi
echo "------------------------------------------------------------"

# 5. 测试连接
echo ""
echo "测试 SSH 连接 Gitee..."
if ssh -T git@gitee.com 2>&1 | grep -q "authenticated"; then
    echo "🎉 成功连接到 Gitee！现在可以正常使用 git clone 等操作了。"
else
    echo "⚠️  仍然无法连接，请确保："
    echo "1. 上面的公钥已正确添加到 Gitee"
    echo "2. 你的网络可以访问 Gitee"
    echo "3. 尝试手动测试: ssh -T git@gitee.com"
fi